home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 335_04 / frasmdat.h < prev    next >
C/C++ Source or Header  |  1990-12-02  |  3KB  |  194 lines

  1.  
  2. /*
  3. HEADER:     ;
  4. TITLE:         Frankenstein Cross Assemblers;
  5. VERSION:     2.0;
  6. DESCRIPTION: "    Reconfigurable Cross-assembler producing Intel (TM)
  7.         Hex format object records.  ";
  8. FILENAME:     frasmdat.h;
  9. SEE-ALSO:     ;
  10. AUTHORS:     Mark Zenier;
  11. */
  12.  
  13. /*
  14.     description    structures and data used in parser and output phases
  15.     history        September 15, 1987
  16.             August 3, 1988   Global
  17.             September 14, 1990   6 char portable var
  18. */
  19.  
  20. #include <ctype.h>
  21. #define PRINTCTRL(char) ((char)+'@')
  22.  
  23. #ifndef Global
  24. #define    Global    extern
  25. #endif
  26.  
  27. #ifdef USEINDEX
  28. #define strchr index
  29. #endif
  30.  
  31. #ifdef NOSTRING
  32. extern char * strncpy();
  33. extern char * strchr();
  34. extern int strcmp();
  35. extern int strlen();
  36. #else
  37. #include <string.h>
  38. #endif
  39.  
  40. #define local 
  41.  
  42. #define TRUE 1
  43. #define FALSE 0
  44.  
  45. #define hexch(cv) (hexcva[(cv)&0xf])
  46. extern char hexcva[];
  47.  
  48. /* symbol table element */
  49. struct symel
  50. {
  51.     char    *symstr;
  52.     int    tok;
  53.     int    seg;
  54.     long    value;
  55.     struct    symel *nextsym;
  56.     int    symnum;
  57. };
  58.  
  59. #define SSG_UNUSED 0
  60. #define SSG_UNDEF -1
  61. #define SSG_ABS 8
  62. #define SSG_RESV -2
  63. #define SSG_EQU 2
  64. #define SSG_SET 3
  65.  
  66. #define SYMNULL (struct symel *) NULL
  67. struct symel * symbentry();
  68.  
  69. /* opcode symbol table element */
  70.  
  71. struct opsym
  72. {
  73.     char    *opstr;
  74.     int    token;
  75.     int    numsyn;
  76.     int    subsyn;
  77. };
  78.  
  79. struct opsynt
  80. {
  81.     int    syntaxgrp;
  82.     int    elcnt;
  83.     int    gentabsub;
  84. };
  85.  
  86. struct igel 
  87. {
  88.     int    selmask;
  89.     int    criteria;
  90.     char    * genstr;
  91. };
  92.     
  93. #define PPEXPRLEN 256
  94.  
  95. struct evalrel
  96. {
  97.     int    seg;
  98.     long    value;
  99.     char    exprstr[PPEXPRLEN];
  100. };
  101.  
  102. #define INBUFFSZ 258
  103. extern char finbuff[INBUFFSZ];
  104.  
  105. extern int nextsymnum;
  106. Global struct symel **symbindex;
  107.  
  108. #define EXPRLSIZE (INBUFFSZ/2)
  109. extern int nextexprs;
  110. Global int    exprlist[EXPRLSIZE];
  111.  
  112. #define STRLSIZE (INBUFFSZ/2)
  113. extern int nextstrs;
  114. Global char *    stringlist[STRLSIZE];
  115.  
  116. extern struct opsym optab[];
  117. extern int gnumopcode;
  118. extern struct opsynt ostab[];
  119. extern struct igel igtab[];
  120. extern int ophashlnk[];
  121.  
  122. #define NUMPEXP 6
  123. Global struct evalrel evalr[NUMPEXP];
  124.  
  125. #define PESTKDEPTH 32
  126. struct evstkel
  127. {
  128.     long v;
  129.     int s;
  130. };
  131.  
  132. Global struct evstkel    estk[PESTKDEPTH], *estkm1p;
  133.  
  134. Global int    currseg; 
  135. Global long     locctr; 
  136.  
  137. extern FILE *yyin;
  138. extern FILE    *intermedf;
  139. extern int    listflag;
  140. extern int hexvalid, hexflag;
  141. Global FILE    *hexoutf, *loutf;
  142. extern int errorcnt, warncnt;
  143.  
  144. extern int linenumber;
  145.  
  146. #define IFSTKDEPTH 32
  147. extern int    ifstkpt; 
  148. Global enum { If_Active, If_Skip, If_Err } 
  149.     elseifstk[IFSTKDEPTH], endifstk[IFSTKDEPTH];
  150.  
  151. #define FILESTKDPTH 20
  152. Global int currfstk;
  153. #define nextfstk (currfstk+1)
  154. Global struct fstkel
  155. {
  156.     char *fnm;
  157.     FILE *fpt;
  158. } infilestk[FILESTKDPTH];
  159.  
  160. Global int lnumstk[FILESTKDPTH];
  161. Global char currentfnm[100];
  162.  
  163. extern struct symel * endsymbol;
  164.  
  165. enum readacts
  166. {
  167.     Nra_normal, 
  168.     Nra_new, 
  169.     Nra_end 
  170. } ;
  171.  
  172. extern enum readacts nextreadact;
  173.  
  174. char * savestring(), *findgen();
  175. long    strtol();
  176. void    reservedsym();
  177. char    *calloc(), *malloc();
  178.  
  179. extern struct symel * endsymbol;
  180. extern char ignosyn[] ;
  181. extern char ignosel[] ;
  182.  
  183. #define NUM_CHTA 6
  184. extern int chtnxalph, *chtcpoint, *chtnpoint ;
  185. Global int *(chtatab[NUM_CHTA]);
  186. int chtcreate(), chtcfind(), chtran();
  187.  
  188. #define CF_END        -2
  189. #define CF_INVALID     -1
  190. #define CF_UNDEF     0
  191. #define CF_CHAR     1
  192. #define CF_NUMBER     2
  193.  
  194.